#include <iostream>

using std::cout;
using std::endl;

//带参数的宏定义,宏定义发生的时机在预处理阶段，进行字符串替换
//如果有bug，要在运行的时候才可以发现
#define  multiply(x, y) ((x) *(y))

//当函数调用的时候，可以去用函数体替代函数的调用
//现代的编译器而言，可以自动识别一个函数是不是内联函数（inline）
inline 
int add(int x, int y)
{
    return x + y;
}

int main(int argc, char **argv)
{
    int a = 3, b = 4, c = 5, d = 6;

    cout << "add(a, b) = " << add(a, b) << endl;//x + y
    cout << "multifly(a + b, c + d) = "
         << multiply(a + b, c + d) << endl;
    //(a + b) * (c + d)
    return 0;
}

